﻿// -----------------------------------------------------------------------
// <copyright file="EntidadeFormModel.cs" company="Storytelling">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------
namespace Storytelling.Modelos
{
    using System;
    using System.Collections.Generic;
    using Storytelling.Entidades;
    using Storytelling.Utils;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public abstract class EntidadeFormModel<T> : BaseFormModel
        where T : Entidade
    {
        private T entidade;

        public T Entidade
        {
            get 
            {
                entidade = entidade ?? CriadorEntidade;
                return entidade; 
            }
            set { entidade = value; }
        }

        protected virtual T CriadorEntidade
        {
            get { return Activator.CreateInstance<T>(); }
        }

        public virtual long? Id
        {
            get { return Entidade.Id; }
            set 
            {
                if (value.HasValue)
                {
                    Entidade.Id = value.Value; 
                } 
            }
        }
    }
}
